using System;
using NUnit.Framework;
using System.Linq.Expressions;
using Legend.Fakes.Extensibility;
using System.Reflection;
using Legend.Fakes.Api;

namespace Legend.Fakes.Tests
{
    /// <summary>
    /// A fake implementation of IFakeObjectCall, used for testing.
    /// </summary>
    public class FakeCall
            : IWriteableFakeObjectCall
    {
        public object ReturnValue;

        public FakeCall()
        {
            this.Arguments = new ArgumentList(new object[] { });
        }

        public MethodInfo Method
        {
            get;
            set;
        }

        public ArgumentList Arguments
        {
            get;
            set;
        }


        public void SetReturnValue(object returnValue)
        {
            this.ReturnValue = returnValue;           
        }
    }
}